package com.rupecm.web;

import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import com.rupecm.recurso.Recurso;
import com.rupecm.recurso.RecursoRN;

@ManagedBean(name = "recursoBean")
@SessionScoped
public class RecursoBean {

	private Recurso recurso = new Recurso();
	private Recurso recursoAux = new Recurso();
	private RecursoRN recursoRN = new RecursoRN();
	HttpSession session;
	private int quantidade;

	public Recurso getRecursoAux() {
		return recursoAux;
	}

	public void setRecursoAux(Recurso recursoAux) {
		this.recursoAux = recursoAux;
	}

	public Recurso getRecurso() {
		return recurso;
	}

	public void setRecurso(Recurso recurso) {
		this.recurso = recurso;
	}
	
	public int getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public void buscarDadosInit() {

		recurso = recursoRN.buscarRecurso();
		if (recurso.getHoraLogin() == null) {
			DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
			String horaCria = df.format(new Date());
			Date data = df.parse(horaCria, new ParsePosition(0));
			recurso.setHoraLogin(data);
		}
		recursoAux = recurso;

		FacesContext context = FacesContext.getCurrentInstance();
		session = (HttpSession) context.getExternalContext().getSession(false);
		session.setAttribute("dadosRecurso", this.recurso);
		session.setAttribute("dadosRecursoAux", this.recursoAux);
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
				.put("dadosRecurso", recurso);
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
				.put("dadosRecurso", recursoAux);

	}

	public void alterarDados() {

		Recurso recursoFalha = new Recurso();

		boolean status = false;

		HttpServletRequest req = (HttpServletRequest) FacesContext
				.getCurrentInstance().getExternalContext().getRequest();
		HttpServletRequest request = (HttpServletRequest) req;
		HttpSession session = (HttpSession) request.getSession();
		this.recursoAux = (Recurso) session.getAttribute("dadosRecurso");

		recursoFalha = recursoAux;
		if (recursoAux.getPerfil() == 2) {
			if (this.recurso.getNome() != null) {
				recursoAux.setNome(this.recurso.getNome());
			}
			if (this.recurso.getLogin() != null) {
				recursoAux.setLogin(this.recurso.getLogin());
			}
			if (this.recurso.getSenha() != null) {
				recursoAux.setSenha(this.recurso.getSenha());
			}
			if (this.recurso.getTelefone() != null) {
				recursoAux.setTelefone(this.recurso.getTelefone());
			}
			if (this.recurso.getEmail() != null) {
				recursoAux.setEmail(this.recurso.getEmail());
			}
			if (this.recurso.getPerfil() != 0) {
				recursoAux.setPerfil(this.recurso.getPerfil());
			}
		} else {
			if (this.recurso.getSenha() != null) {
				recursoAux.setSenha(this.recurso.getSenha());
			}
			if (this.recurso.getTelefone() != null) {
				recursoAux.setTelefone(this.recurso.getTelefone());
			}
			if (this.recurso.getEmail() != null) {
				recursoAux.setEmail(this.recurso.getEmail());
			}
		}
		if (this.recursoAux != null) {
			status = recursoRN.alterarRecurso(this.recursoAux);
		}

		FacesContext context = FacesContext.getCurrentInstance();

		if (status == false) {

			recurso = recursoFalha;
			session = (HttpSession) context.getExternalContext().getSession(
					false); 
			session.setAttribute("dadosRecurso", this.recurso);
			FacesContext.getCurrentInstance().getExternalContext()
					.getSessionMap().put("dadosRecurso", recurso);

		} else {

			recurso = recursoAux;
			session = (HttpSession) context.getExternalContext().getSession(
					false);
			session.setAttribute("dadosRecurso", this.recurso);
			FacesContext.getCurrentInstance().getExternalContext()
					.getSessionMap().put("dadosRecurso", recurso);
			FacesMessage facesMessage = new FacesMessage(
					"Dados alterados com sucesso");
			context.addMessage("sucesso", facesMessage);
		}
	}

	public void alterarDadosRecurso() {

	}
}
